#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>

//int main()
//{
//	unsigned char a = 200;
//	unsigned char b = 100;
//	unsigned char c = 0;
//	//a 11001000
//	//b 01100100
//	//a+b           10010 1100
//	//000000000000000000000000  11111111
//	//0    0    0   0 0 0 0 0
//	//128 64   32   16 8 4 2 1 
//	//100101100
//	//111111111111111111111111100101100
//	//00101100 4 + 8 + 32==44
//	
//	c = a + b;
//	printf("%d %d", a + b, c);//300  
//	
//	return 0;
//}



//int main()
//{
//    char a[1000] = { 0 };
//    int i = 0;
//    for (i = 0; i < 1000; i++)
//    {
//        a[i] = -1 - i;
//    }
//    printf("%d", strlen(a));
//    return 0;
//}



//#include <stdio.h>
//int main()
//{
//    int a = 0x11223344;
//    char* pc = (char*)&a;
//    *pc = 0;
//    //44 33 22 11
//    //11223300
//    printf("%x\n", a);
//    return 0;
//}



//int fun()
//{
//	int a = 1;
//	char* c = &a;
//	if (*c == 0)
//		return 0;
//	else
//		return 1;
//
//}
//int main()
//{
//	
//	int ret = fun();
//	printf("%d", ret);
//	return 0;
//}


//char* my_strncpy(char* des, char* sour, size_t size)
//{
//	char* ret = des;
//	for (int i = 0; i < size; i++)
//	{
//		*des = *sour;
//		des++;
//		sour++;
//	}
//	return ret;
//}
//#include <stdlib.h>
//int main()
//{
//	char des[40];
//	char sour[] = "Douxinyixxxxx";
//	char* s = my_strncpy(des, sour, 8);
//	//char* s = strncpy(des, sour, 8);
//	printf("%s", des);
//	return 0;
//}


//char* my_strncat(char* des, char* sour, size_t size)
//{
//	char* ret = des;
//	while (*des)
//	{
//		des++;
//	}
//	while (size)
//	{
//		*des = *sour;
//		des++;
//		sour++;
//		size--;
//	}
//	*des = '\0';
//	return ret;
//}
//
//int main()
//{
//	char s1[40] = "Douxinyilike";
//	char s2[] = "wangkun";
//	my_strncat(s1, s2, 4);
//
//	printf("%s", s1);
//	return 0;
//}




//void my_memcpy(void* des, void* sour, size_t size)
//{
//	for (int i = 0; i < size; i++)
//	{
//		*((char*)des) = *((char*)sour);
//		((char*)des)++;
//		((char*)sour)++;
//	}
//
//}
//
//
//int main()
//{
//	char s1[40];
//	char s2[] = "Douxinyi";
//	//memcpy(s1, s2, 3);
//	my_memcpy(s1, s2, 3);
//	printf("%s", s1);
//	return 0;
//}


void* my_memmove(void* des, void* sour, size_t size)
{
	char* s1 = (char*)des;
	char* s2 = (char*)sour;
	if (des < sour)
	{
		while (size--)
		{
			*((char*)des) = *((char*)sour);
			((char*)des)++;
			((char*)sour)++;
		}
	}
	else
	{
		while (size--)
		{
			*((char*)des + size) = *((char*)sour + size);
		}
	}
}

int main()
{
	char s1[40] = "douxinyi like";
	//memmove(s1 + 13, s1, 8);
	my_memmove(s1 + 13, s1, 8);
	printf("%s", s1);
	return 0;
}